package com.cskaoyan.javse.oop2._1extends._4hierarchy;

/**
 * 继承链中类的关系
 * 1. 在一条继承链中，总称呼下游类是上游类的子类，不管隔了几层。没有`孙子类`或者`重孙类`这种概念。
 * 2. 在一条继承链中的，下游的类总是继承上游类的所有成员，不管隔了几层。
 * 3. 在一条继承链中，下游类总可以看成一个上游类，存在"is-a"关系。
 * 4. 不在同一条继承链中的类，没有任何关系。虽然看起来像"兄弟姐妹"类，但是Java是不讲究血统的。
 *    - 因为一方面，子类可以自由扩展功能；另一方面，继承来的东西也是可以修改的。
 *    - 所以"兄弟姐妹"可能完全和"我"不同，没有任何关系.
 * 5.不能循环继承
 *
 * @since 16:22
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        Son s = new Son();
        System.out.println(s.gVar);
        /*
            Son对象可以有几个引用指向?
         */
        Father f = s;
        Grandfather gf = s;
        Object o = s;

        Son2 s2 = new Son2();
        // Son s3 = s2;
    }
}

class Grandfather {
    int gVar;
}

class Father extends Grandfather {
    int fVar;
}

class Son extends Father {
    int sVar;
}

class Son2 extends Father {
    int s2Var;
}